/**
 * Copyright @2019 Josin All Rights Reserved.
 * Author: Josin
 * Email : xeapplee@gmail.com
 *
 * Hello, This is the fast xml's parsing example
 * To simplify the coding, the thing you want to do
 * is to add some macros, Let's have a try.
 */

#include <stdio.h>
#include <xml_demo.h>


int main(int argc, char *argv[])
{
    char *xml_str = "<?xml version=\"1.0\" encoding=\"UTF-8\" author=\"Josin\" ?>\n"
                    "<!--Hello This is the comments-->\n"
                    "<info>\n"
                    "    <name id=\"11\" ppid=\"228\"><![CDATA[Josin]]></name>\n"
                    "    <address>Hunan</address>\n"
                    "</info>";
    CXML *xml = new_cxml_from_string(xml_str, strlen(xml_str));
    
    if ( !xml ) {
        printf("Your xml format is wrong.");
        trash_cxml(xml);
        return 0;
    }
    
    CXML_root *root = NEW_CXML_root_FROM_DATA(xml->data);
    printf("Root name: %s\n", root->info->key);
    
    CXML_info *info = NEW_CXML_info_FROM_DATA(root->info->val);

    printf("%s: %s\n", info->name->key, (char *)info->name->val);
    printf("%s: %s\n", info->addr->key, (char *)info->addr->val);
    
    CXML_name *nameAttrs = NEW_CXML_name_FROM_ATTR(info->name->attrs);
    printf("%s:%s\n", nameAttrs->id->key, nameAttrs->id->val);
    printf("%s:%s\n", nameAttrs->ppid->key, nameAttrs->ppid->val);
    TRASH_CXML_name(nameAttrs);

    TRASH_CXML_info(info);
    TRASH_CXML_root(root);
    trash_cxml(xml);
    
    return 0;
}